package cn.com.spic.demo.dao;

import cn.com.spic.demo.dto.AcionDetailRateExample;
import cn.com.spic.demo.dto.EchartDTO;
import cn.com.spic.demo.dto.ProgressReportDTO;
import cn.com.spic.demo.dto.SpecialProjectDTO;
import cn.com.spic.demo.po.EchartPo;
import cn.com.spic.demo.po.ProgressReportPO;
import cn.com.spic.demo.po.SpecialProjectPO;
import cn.com.spic.demo.po.YearAndMonthPO;
import com.yonyou.iuap.ucf.dao.BaseDAO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;


@Repository
public interface ProgressReportDAO extends BaseDAO<ProgressReportPO, String> {
    void insertProgress(ProgressReportPO[] progressReportPOs);

    List<ProgressReportPO> getMaxActRateReportdtos(Map<String, String> map);

    List<String> getMaxListActionId(Map<String, String> map);

    String getSumMaxActRateReportdtos(Map<String, String> map);

    List<ProgressReportPO> getProgressReportdtosNoLimit(Map<String, String> map);

    //进度填报和审核情况列表
    List<ProgressReportPO> getjdAndShqkList(Map<String, String> map);

    //根据部门编号查询出当前月份未完成的进度项
    List<ProgressReportPO> getActionByDept(Map<String, String> map);

    //获取当前年月完成的填报项
    List<ProgressReportPO> getAllFinishAcion(Map<String, String> map);

    String getProgressReportdtosNoLimitLimitOne(Map<String, String> map);

    /**
     * XX公司对标提升工作月度报告---累计完成进度
     *
     * @return
     */
    List<EchartPo> groupReportMonth_ljwcjd(Map<String, String> map);

    /**
     * XX公司对标提升工作月度报告---当月完成进度
     *
     * @return
     */
    List<EchartPo> groupReportMonth_dywcjd(Map<String, String> map);

    /**
     * 逾期的项目
     *
     * @return
     */
    List<EchartPo> yuqiJdx(Map<String, String> map);

    /**
     * 获取120项专线数据
     *
     * @return
     */
    List<EchartPo> getActionByZx(Map<String, String> map);

    /**
     * 逾期的项目-详细信息
     *
     * @return
     */
    List<EchartPo> yuqiJdx_xiangxi(Map<String, String> map);

    /**
     * 获取每个二级的平均计划完成率，也可以用id查询单个公司的平均计划完成率
     *
     * @return
     */
    List<EchartPo> getjhwclBypingjunf(Map<String, String> map);

    /**
     * 获取10大对标领域平均计划完成率，也可以用id查询平均计划完成率
     *
     * @return
     */
    List<EchartPo> getdblypingjunf(Map<String, String> map);

    /**
     * 集团公司对标提升工作月度报告-二级单位工作进展
     *
     * @return
     */
    List<EchartPo> ejdwjz_charts(Map<String, String> map);

    /**
     * 集团公司对标提升工作月度报告-工作特点--第一段文本
     *
     * @return
     */
    List<EchartPo> groupcompany_gztd_a(Map<String, String> map);

    /**
     * 集团公司对标提升工作月度报告-工作特点--第二段文本
     *
     * @return
     */
    List<EchartPo> groupcompany_gztd_b(Map<String, String> map);

    /**
     * 获取10大专项的实际完成和计划完成
     *
     * @return
     */
    List<EchartPo> zxSjwcAndJhwc(Map<String, String> map);

    EchartPo getFileById(Map<String, String> map);

    List<EchartPo> yuqiJdx_xiangxi_zx(Map<String, String> map);

    //上报稿的逾期图标
    List<EchartPo> yuqijdx_sbg(Map<String, String> map);

    //附件管理列表
    List<EchartPo> fileManagerList(Map<String, String> map);

    //附件管理关联的二级单位列表
    List<EchartPo> benchmarkingDetail(Map<String, String> map);

    //更新数据库中集团对于二级单位的审核情况;
    Integer UpdateGroupAudit(@Param("Id") String Id, @Param("auditId") String auditId);


    //    集团审核不通过，进行驳回，改变二级管理的审核情况;
    Integer UpdateUnitDef(@Param("act_Id") String Id, @Param("def4") String def4);

    //  通过行动二级单位编号查询上交附件的名称以及地址
    EchartPo SelectEnclosureIp(String actionId);

    //  驳回的附件的存储;
    Integer AddEnclosureIp(String actionId);


    //修改数据库指定行动项的附件驳回地址的默认值;
    Integer UpdateEnclosureDefault(String actionId);

    /**
     * 集团公司对标提升工作月度报告-工作特点--第二段文本
     *
     * @return
     */
    List<EchartPo> groupcompany_gztd_b_a(Map<String, String> map);

    /**
     * 集团公司对标提升工作月度报告-工作特点--第二段文本
     *
     * @return
     */
    List<EchartPo> groupcompany_gztd_b_b(Map<String, String> map);

    /**
     * 获取九大项
     *
     * @return
     */
    List<EchartPo> getNinePro();

    List<EchartPo> getReportByDept(Map<String, String> map);

    int saveReportProgress(Map<String, String> po);

    int saveReportProgressSetNull(ProgressReportDTO dto);

    void saveParentReportProgress(Map<String, String> po);

    ProgressReportPO getProgressReportdtosNoByActionId(String id);

    String getMaxReportdtosLimitOne(Map<String, String> map);

    Integer updateByExampleSelective(@Param("progressReportPO") ProgressReportPO progressReportPO, @Param("example") AcionDetailRateExample example);

    Integer countByExample(Map<String, String> example);

    Integer countByExampleByIn(String def3, String[] arrays);

    List<String> selectActionIdByLike(Object[] ids);

    YearAndMonthPO getMaxYearAndMonth(String actionId);

    String getThirdSumActRate(Map<String, Object> map);

    String getLastestNowMessage(String actionId);

    Integer delFile(String id);
}
